/**
 * 基础用法： 创建基本数据结构
 */

/**
 * @babel/types 包含了很多方法
 * 作用：
 *
 * 1、手动构建AST , 可以将手动构建的AST 生成代码
 * 2. 检查AST节点的类型
 */

import types from '@babel/types'
import genTools from '@babel/generator'

// 判断标识符
const test2 = () => {
  // 手动创建一个标识符节点

  let code = `let a = 1`

  let ast1 = types.variableDeclaration('let', [
    {
      type: 'VariableDeclarator',
      // 创建一个标识符
      id: types.identifier('a'),
      // 初始化，值就是1
      init: types.numberLiteralTypeAnnotation(1)
    }
  ])

  // 生成 let a = 1
  console.log('生成的代码');
  console.log(genTools.default(ast1).code);

  // false
  // 是否符合标识 类型节点
  console.log(types.isIdentifier('a')); // false

  console.log(types.isIdentifier(types.identifier('a')));    // true
}



test2()
